package com.koalac.ironman.util;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;

import android.content.Context;

import com.koalac.ironman.cache.SysAppConfig;

public class FileUtil {
	/**
	 * 删除文件
	 * 
	 * @param file
	 */
	public static void deleteFile(File file) {
		if (file.exists()) { // 判断文件是否存在
			if (file.isFile()) { // 判断是否是文件
				file.delete(); // delete()方法 你应该知道 是删除的意思;
			} else if (file.isDirectory()) { // 否则如果它是一个目录
				File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
				for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
					deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
				}
				file.delete();
			}
		} else {

		}
	}

	/**
	 * 写入feedback的ID和图片路径
	 * 
	 * @param file
	 * @param info
	 */
	public static void writeTXT(File file, ArrayList<String> info) {
		try {
			BufferedWriter output = new BufferedWriter(new FileWriter(file));
			for (int i = 0; i < info.size(); i++) {
				output.write(info.get(i) + "\n");
			}
			output.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 读取feedback的ID和图片路径
	 * 
	 * @param txt
	 * @return
	 */
	public static String[] readTXT(File txt, String uid) {
		try {
			FileReader reader = new FileReader(txt);
			String buffer = new String();
			char ch[] = new char[1024];
			int index = reader.read(ch);
			while (index != -1) {
				String str = new String(ch, 0, index);
				buffer += str;
				index = reader.read(ch);
			}
			// deleteFile(txt);
			String[] info = buffer.split("\n");
			if (info != null && info.length > 0 && info[0].equals(uid)) {
				return info;
			} else {
				return null;
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return null;
	}



	/**
	 * 清空upload目录下的所有文件，但不删除upload文件夹
	 * 
	 * @param file
	 */
	public static void clearUpLoadDirectory(File file) {
		File files[] = file.listFiles(); // 声明目录下所有的文件 files[];
		for (int i = 0; i < files.length; i++) { // 遍历目录下所有的文件
			deleteFile(files[i]); // 把每个文件 用这个方法进行迭代
		}
	}

	/**
	 * 通过指定目录检测该目录是否有txt文件
	 * 
	 * @param rootFilePath
	 * @return
	 */
	public static boolean hasTxtFile(String rootFilePath) {
		File file = new File(rootFilePath);
		if (file.isDirectory()) {
			String[] fileList = file.list();
			for (int i = 0; i < fileList.length; i++) {
				String fileName = fileList[i];
				int dotIndex = fileName.lastIndexOf(".");
				String suffix = fileName.substring(dotIndex + 1,
						fileName.length());
				if (suffix.equals("txt")) {
					return true;
				}
			}
		}
		return false;
	}


	public static long getFileSizes(File f) throws Exception {// 取得文件大小
		long s = 0;
		if (f.exists()) {
			FileInputStream fis = null;
			fis = new FileInputStream(f);
			s = fis.available();
		} else {
			f.createNewFile();
			System.out.println("文件不存在");
		}
		return s;
	}

	// 递归
	public static long getFileSize(File f) throws Exception// 取得文件夹大小
	{
		long size = 0;
		File flist[] = f.listFiles();
		for (int i = 0; i < flist.length; i++) {
			if (flist[i].isDirectory()) {
				size = size + getFileSize(flist[i]);
			} else {
				size = size + flist[i].length();
			}
		}
		return size;
	}

	public static String FormetFileSize(long fileS) {// 转换文件大小
		DecimalFormat df = new DecimalFormat("#.00");
		String fileSizeString = "";
		if (fileS < 1024) {
			fileSizeString = df.format((double) fileS) + "B";
		} else if (fileS < 1048576) {
			fileSizeString = df.format((double) fileS / 1024) + "K";
		} else if (fileS < 1073741824) {
			fileSizeString = df.format((double) fileS / 1048576) + "M";
		} else {
			fileSizeString = df.format((double) fileS / 1073741824) + "G";
		}
		return fileSizeString;
	}

	/**
	 * 检测文件是否存在
	 * 
	 * @param filePath
	 * @return
	 */
	public static Boolean isFileExist(String filePath) {
		File file = new File(filePath);
		return file.exists();
	}

}
